//Fresnel 菲涅尔项
            float3 fresnelSchlick(float cosTheta, float3 F0)
            {
                return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0);
            }
            //法线分布函数（高光）
            float DistributionGGX(float3 N,float3 H,float roughness)
            {
                
                float a = roughness*roughness;
                a = lerp(0.002,1.0,a);
                float a2 = a*a;
                float NdotH = max(dot(N,H),0.000001);
                float NdotH2 = NdotH*NdotH;

                float num = a2;
                float denom = (NdotH2*(a2-1.0)+1.0);
                denom = UNITY_PI*denom*denom;
                return num/denom;
            }
            //Geometry 几何函数（其一）
            float GeometrySchlickGGX(float NdotV, float roughness)
            {
                float r = (roughness + 1.0);
                float k = (r*r) / 8.0;

                float num   = NdotV;
                float denom = NdotV * (1.0 - k) + k;

                return num / denom;
            }
            //Geometry 几何函数（其二）
            float GeometrySmith(float3 N, float3 V, float3 L, float roughness)
            {
                float NdotV = max(dot(N, V), 0.0);
                float NdotL = max(dot(N, L), 0.0);
                float ggx2  = GeometrySchlickGGX(NdotV, roughness);
                float ggx1  = GeometrySchlickGGX(NdotL, roughness);
                return ggx1 * ggx2;
            }
            //间接光照镜面反射用函数
            float3 fresnelSchlickRoughness(float cosTheta, float3 F0, float roughness)
            {
	            return F0 + (max(float3(1.0 - roughness, 1.0 - roughness, 1.0 - roughness), F0) - F0) * pow(1.0 - cosTheta, 5.0);
            }